// 记录公用的工具类

import { saveAs } from 'file-saver'

/**
 * 格式化文件大小
 * @param size
 */
export const formatSize = (size?: number) => {
  if (!size) return '未知'
  if (size < 1024) return size + ' B'
  if (size < 1024 * 1024) return (size / 1024).toFixed(2) + ' KB'
  return (size / (1024 * 1024)).toFixed(2) + ' MB'
}


/**
 * 下载图片
 * @param url 图片下载地址
 * @param fileName 要保存为的文件名
 */
export function downloadImage(url?: string, fileName?: string) {
  if (!url) {
    return
  }
  saveAs(url, fileName)
}

/**
 * 将图片地址转为 #RRGGBB 格式
 * @param input 图片地址
 */
export function toHexColor(input: string) {
  // 去掉 0x 前缀
  const colorValue = input.startsWith('0x') ? input.slice(2) : input

  // 将剩余部分解析为十六进制数，再转成 6 位十六进制字符串
  const hexColor = parseInt(colorValue, 16).toString(16).padStart(6, '0')

  // 返回标准 #RRGGBB 格式
  return `#${hexColor}`
}

/**
 * 浏览量格式化工具：
 * - <1k → 原数（如：500 → "500"）
 * - 1k~1w → 保留1位小数，单位k（如：1234 → "1.2k"，9999 → "10k"）
 * - ≥1w → 保留1位小数，单位w（如：12345 → "1.2w"，100000 → "10w"）
 * @param viewCount 浏览量（支持数字、null、undefined，自动兜底）
 * @returns 格式化后的字符串
 */
export function viewFormat(viewCount: number | null | undefined): string {
  // 处理无效输入（null/undefined/非数字/负数）
  if (viewCount === null || viewCount === undefined || isNaN(viewCount) || viewCount < 0) {
    return '0';
  }

  if (viewCount < 1000) {
    // 小于1k，直接显示整数（如：500 → "500"）
    return Math.floor(viewCount).toString();
  } else if (viewCount < 10000) {
    // 1k ~ 1w，换算为k
    const kValue = viewCount / 1000;
    // 保留1位小数，去掉末尾的.0（如：1000→1k，1234→1.2k）
    return kValue.toFixed(1).replace(/\.0$/, '') + 'k';
  } else {
    // ≥1w，换算为w
    const wValue = viewCount / 10000;
    // 保留1位小数，去掉末尾的.0（如：10000→1w，15678→1.6w）
    return wValue.toFixed(1).replace(/\.0$/, '') + 'w';
  }
}

